package com.zjy.software.day11;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;

public class ExceptionDemo {
    public static void main(String[] args) throws Exception {
        Integer count=null;
//        ....
        // 空指针异常
//        boolean equals = count.equals(10);

        //数字格式化或者转化异常
//        int i = Integer.parseInt("123 ");

        //数学计算异常
//        extracted();

        handleException();

//        throwsException();

    }

    private static void throwsException() throws FileNotFoundException ,Exception {
        File file=new File("123");

            FileInputStream fileInputStream=new FileInputStream(file);

    }

    private static void handleException() {
        try {
            //可能发生的异常
            extracted();

            System.out.println("我是发生异常后的代码");
            //只有java虚拟机退出,finally不会被执行,否则finally代码一定会执行
//            System.exit(0);
//            return;
        } catch (NullPointerException e) {
            //当代码有异常时,被捕捉后就来到catch
            System.out.println(" = " + "捕捉了一个异常,我处理了一个异常,主要是对象为空");
            e.printStackTrace();
        }catch (ArithmeticException | NumberFormatException e){
            System.out.println(" = " + "捕捉了一个异常,我处理了一个异常,主要是用来处理数学类的异常");
            e.printStackTrace();
        } catch (Exception e){
//            e.printStackTrace();
////            System.out.println(" = " + "捕捉了一个异常,我处理了一个不在处理范围之内的异常");
//            throw new RuntimeException("抛出了一个运行时的不在处理范围的异常,请上级处理");
        }
        finally {
            final int i = 10;
            System.out.println(" = " + "finally代码块,不管有没有异常都会执行");
        }
    }


    private static void extracted() {
        Integer test=null;
//        test.equals(10);
//        int sum=10/0;
//        Integer.parseInt("aaa");

        int[] arr=new int[10];
        arr[11]=10;
    }


}
